#pragma once
/*--------------------------------------------------------------------------------
 * Adaptive Intelligence - Foundation Framework Class Library
 * Version 2.00
 * 
 * Data Received Event Arguments Class
 *      Provides an event arguments definition for data reception events.
 *------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------
 * System Imports
 *------------------------------------------------------------------------------*/
#include "stdafx.h"
using namespace System;

namespace Adaptive
{
	namespace Network
	{
		namespace Sockets
		{
			/// <summary>
			/// Provides an event arguments definition for data reception events.
			/// </summary>
			public ref class DataReceivedEventArgs : public System::EventArgs 
			{
			public:
				/*--------------------------------------------------------------------------------
				 * Constructor / Dispose / Destructor Methods
				 *------------------------------------------------------------------------------*/
				#pragma region Constructor / Dispose / Destructor Methods
				/// <summary>
				/// Initializes a new instance of the class.
				/// </summary>
				/// <param name="data">
				/// The data recieved from a remote sender.
				/// </param>
				DataReceivedEventArgs(array<Byte>^ data);
				/// <summary>
				/// Class destructor.
				/// </summary>
				~DataReceivedEventArgs();
				#pragma endregion
				
				/*--------------------------------------------------------------------------------
				 * Public Properties
				 *------------------------------------------------------------------------------*/
				#pragma region Public Properties
				/// <summary>
				/// Gets the data received from the remote host.
				/// </summary>
				/// <value>
				/// A byte array containing the data that was read.
				/// </value>
				property array<Byte>^ DataRecieved { array<Byte>^ get(); }
				#pragma endregion

			private:
				/*--------------------------------------------------------------------------------
				 * Private Member Declarations
				 *------------------------------------------------------------------------------*/
				#pragma region Private Member Declarations

				array<Byte>^		_data;

				#pragma endregion

			};
		}
	}
}
